#include<bits/stdc++.h>
using namespace std;
int n,m,Q,f[500005],g[500005];
priority_queue<int, vector<int> , greater<int> > q;
int find(int x){
	if(f[x]==x) return x;
	return f[x]=find(f[x]);
}
signed main(){
	freopen("destory.in","r",stdin);
	freopen("destory.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>n>>m>>Q;
	for(int i=1;i<=n;i++) f[i]=i;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		f[find(u)]=find(v);
	}
	for(int i=1;i<=n;i++) f[i]=find(i);
	while(Q--){
		int l,r,L,ans=0;
		cin>>l>>r; ans=r-l+1;
		for(int i=l;i<=r;i++)
			if(g[f[i]]==0) g[f[i]]=i,L=i;
		for(int i=l;i<=r;i++) g[f[i]]=0;
		for(int i=l;i<=r;i++){
			g[f[i]]=i;
			q.push(i);
			while(!q.empty()){
				if(g[f[q.top()]]!=q.top()) q.pop();
				else break;
			}
			if(i>=L && !q.empty()){
				ans=min(ans,i-q.top()+1);
			}
		}
		for(int i=l;i<=r;i++) g[f[i]]=0;
		while(!q.empty()) q.pop();
		cout<<ans<<'\n';
	}
	return 0;
}